<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>The Concept</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="ECPG - Embedded SQL in C"
HREF="ecpg.html"><LINK
REL="PREVIOUS"
TITLE="ECPG - Embedded SQL in C"
HREF="ecpg.html"><LINK
REL="NEXT"
TITLE="Managing Database Connections"
HREF="ecpg-connect.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="ECPG - Embedded SQL in C"
HREF="ecpg.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="ecpg.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 33. <SPAN
CLASS="APPLICATION"
>ECPG</SPAN
> - Embedded <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> in C</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="Managing Database Connections"
HREF="ecpg-connect.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="ECPG-CONCEPT"
>33.1. The Concept</A
></H1
><P
>   An embedded SQL program consists of code written in an ordinary
   programming language, in this case C, mixed with SQL commands in
   specially marked sections.  To build the program, the source code (<TT
CLASS="FILENAME"
>*.pgc</TT
>)
   is first passed through the embedded SQL preprocessor, which converts it
   to an ordinary C program (<TT
CLASS="FILENAME"
>*.c</TT
>), and afterwards it can be processed by a C
   compiler.  (For details about the compiling and linking see <A
HREF="ecpg-process.html"
>Section 33.10</A
>).
   Converted ECPG applications call functions in the libpq library
   through the embedded SQL library (ecpglib), and communicate with
   the PostgreSQL server using the normal frontend-backend protocol.
  </P
><P
>   Embedded <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> has advantages over other methods
   for handling <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> commands from C code. First, it
   takes care of the tedious passing of information to and from
   variables in your <ACRONYM
CLASS="ACRONYM"
>C</ACRONYM
> program.  Second, the SQL
   code in the program is checked at build time for syntactical
   correctness.  Third, embedded <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> in C is
   specified in the <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> standard and supported by
   many other <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> database systems.  The
   <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> implementation is designed to match this
   standard as much as possible, and it is usually possible to port
   embedded <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> programs written for other SQL
   databases to <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> with relative
   ease.
  </P
><P
>   As already stated, programs written for the embedded
   <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> interface are normal C programs with special
   code inserted to perform database-related actions.  This special
   code always has the form:
</P><PRE
CLASS="PROGRAMLISTING"
>EXEC SQL ...;</PRE
><P>
   These statements syntactically take the place of a C statement.
   Depending on the particular statement, they can appear at the
   global level or within a function.  Embedded
   <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> statements follow the case-sensitivity rules
   of normal <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> code, and not those of C.
  </P
><P
>   The following sections explain all the embedded SQL statements.
  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="ecpg.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="ecpg-connect.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><SPAN
CLASS="APPLICATION"
>ECPG</SPAN
> - Embedded <ACRONYM
CLASS="ACRONYM"
>SQL</ACRONYM
> in C</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="ecpg.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Managing Database Connections</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>